public class XQi {

    public static int pao(int[] A, int[] B, int qa, int[][] ju) {
        int res;//result 结果

        res = pao1(A, B, qa, ju);
        //res = pao2(A,B,qa,ju);
        //res = pao3(A,B,qa,ju);

        return res;
    }

    public static int pao1(int[] A, int[] B, int qa, int[][] ju) {
        // 验证坐标合法性
        if (!isValid(A) || !isValid(B)) return -1;
        // 检查是否为直线移动
        if (A[0] != B[0] && A[1] != B[1]) return -1;

        int dx = Integer.compare(B[1], A[1]); // 横向步长
        int dy = Integer.compare(B[0], A[0]); // 纵向步长

        int y = A[0] + dy;
        int x = A[1] + dx;
        int count = 0; // 路径上的棋子数

        // 遍历路径
        while (y != B[0] || x != B[1]) {
            if (!isValid(new int[]{y, x})) return -1; // 越界检查
            if (ju[y][x] != 0) count++;
            y += dy;
            x += dx;
        }

        int target = ju[B[0]][B[1]];
        // 普通移动（目标为空）
        if (target == 0) {
            return count == 0 ? 1 : -1;
        }
        // 吃子
        else {
            if ((qa > 0 && target > 0) || (qa < 0 && target < 0)) return -1;
            return count == 1 ? 2 : -1;
        }
    }

    private static boolean isValid(int[] pos) {
        return pos[0] >= 0 && pos[0] < 10 && pos[1] >= 0 && pos[1] < 9;
    }
}